<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name="Page-topic" content="ST-Open Tutorial: FDA_READ" />
 <meta name="Description" content="ST-Open Tutorial: FDA_READ" />
 <meta name="Keywords" content="ST-Open Weichwaren, Open Quelle, ST-Open, Weichwaren, Bibliothek, Bibliotheken, freie Weichwaren, Assembler, C" />
 <meta name="date" content="2009-05-08T00:00:00+00:00" />
 <meta name="robots" content="index,follow" />
 <meta name="revisit-after" content="14 days" />
 <meta name="generator" content="Bernhard Schornak, handwritten" />
 <style type="text/css"><!--@import "../../st.css";--></style>
 <link rel="SHORTCUT ICON" href="../../../../pics/favicon.ico" />
 <title>FDA_READ</title>
</head>
<body id="top">
<div class="pagehd">
<div id="menu">
<ul>
 <li><a href="../../../index.htm">Weichwaren</a></li>
 <li><a href="../tut/index.htm">Tutorials</a></li>
 <li><a href="../index.htm">Dokumentation</a></li>
 <li><a href="../alp.htm">alphabetisch</a></li>
 <li><a href="../fct.htm">nach Funktion</a></li>
</ul>
</div>
<div class="update">[2009-05-08]</div>
<div class="headpc"><img src="../../pics/ste.png" alt="QuelleDoc Logo" width="75" height="75" border="0" /></div>
</div>
<div class="crlf1"></div>
&#160;&#160;&#160;<a href="index.htm"><img src="../../../../pics/nav_up.png" alt="aufw&auml;rts" width="20" height="20" border="0" title="aufw&auml;rts" /></a>
&#160;&#160;&#160;<a href="0504.htm"><img src="../../../../pics/nav_bk.png" alt="zur&uuml;ck" width="20" height="20" border="0" title="zur&uuml;ck" /></a>
&#160;&#160;&#160;<a href="0506.htm"><img src="../../../../pics/nav_fw.png" alt="vorw&auml;rts" width="20" height="20" border="0" title="vorw&auml;rts" /></a>
&#160;&#160;&#160;<a href="FFFF.htm">Glossar</a>
<div class="crlf1"></div>
<div class="text100">
<h1>FDA_READ</h1>
liest Eintr&auml;ge aus Datenfeldern.
<h2>Numerische Daten</h2>
<div class="crlf1"></div>
<h3>Bytes, Worte und Doppelworte</h3>
<div class="box100q"><pre>
DD Meine_Funktion(DD mh)
{
 DD a;
 a = FDacc(mh, et, sub, FDA_READ, 0, 0);
 return(a);
}
</pre></div>
<div class="crlf1"></div>
<h3>Vier- und Achtfachworte</h3>
<div class="box100q"><pre>
DD Meine_Funktion(DD mh, VOID *x)
{
 FDacc(mh, et, sub, FDA_READ, x, 0);
 return(*FIA_ERR);
}
</pre></div>
Daten, die nicht in ein 32 Bit breites Register passen, werden im ST-Open System
 <i>prinzipiell</i> &uuml;ber ihre Adresse angesprochen.
<div class="crlf1"></div>
Um ein SYS3175 wegen des Zugriffs auf eine nicht angepasste Adresse zu vermeiden, kann
 die DBE hier nicht die schnelleren XMM-Anweisungen MOVQ, respektive MOVDQA verwenden.
 Da die &uuml;bergebene Adresse von der abfragenden Funktion festgelegt wird, und die
 DBE sie nicht eigenm&auml;chtig &auml;ndern kann, muss auf langsamere L&ouml;sungen
 zur&uuml;ckgegriffen werden. Vierfachworte werden mit zwei Doppelwortzugriffen an die
 &uuml;bergebene Adresse kopiert, bei Achtfachworten kommt das wesentlich langsamere
 MOVDQU (statt MOVDQA) zum Einsatz.
<div class="crlf1"></div>
<h2>Festl&auml;ngenblocks</h2>
Eine M&ouml;glichkeit ist das Laden der im Feld gespeicherten Daten in ein Array des
 ben&ouml;tigten Datentyps. Da die Lesefunktion SSE-Register zum Kopieren verwendet,
 ist diese Methode sehr schnell:
<div class="box100q"><pre>
DD Meine_Funktion(DD mh, VOID *x)
{
 FDacc(mh, et, sub, FDA_READ, x, 0);
 return(*FIA_ERR);
}
</pre></div>
<div class="crlf1"></div>
Die zweite M&ouml;glichkeit w&auml;re die Abfrage der Adresse, an der der Speicherblock
 beginnt. Das ist schneller, da der Inhalt des Eintrags anschliessend direkt gelesen
 und ge&auml;ndert werden kann, ohne den ge&auml;nderten Block mittels FDA_WRITE wieder
 zur&uuml;ckschreiben zu m&uuml;ssen. Da lesende Unterfunktionen wie FDA_ADDRESS das
 <i>ge&auml;ndert</i>-F&auml;hnchen nicht setzen (der Feldinhalt bleibt unangetastet),
 m&uuml;ssen Sie gegebenenfalls LDstc() aufrufen, wenn &Auml;nderungen beim Schliessen
 des Feldes gesichert werden sollen.
<div class="box100q"><pre>
DD Meine_Funktion(DD mh, VOID *x)
{
 x = FDvpt(mh, et, sub, FDA_ADDRESS, 0, 0);
 if(!*FIA_ERR)
 {
  ...             /* Zugriffe auf den Block */
  ...
  LDstc(mh);      /* Sicherung erzwingen    */
 }
}
</pre></div>
<div class="crlf1"></div>
<h2>Zeichenketten</h2>
<div class="box100q"><pre>
DD Meine_Funktion(DD mh, VOID *s)
{
 FDacc(mh, et, sub, FDA_READ, s, 0);
 return(*FIA_ERR);
}
</pre></div>
<div class="crlf1"></div>
<h3>Intelligent Design</h3>
Parameter 5 ist nur f&uuml;r Adressen erforderlich. Parameter 6 wird nicht ben&ouml;tigt.
</div>
<div class="crlf2"></div>
&#160;&#160;&#160;<a href="index.htm"><img src="../../../../pics/nav_up.png" alt="aufw&auml;rts" width="20" height="20" border="0" title="aufw&auml;rts" /></a>
&#160;&#160;&#160;<a href="0504.htm"><img src="../../../../pics/nav_bk.png" alt="zur&uuml;ck" width="20" height="20" border="0" title="zur&uuml;ck" /></a>
&#160;&#160;&#160;<a href="0506.htm"><img src="../../../../pics/nav_fw.png" alt="vorw&auml;rts" width="20" height="20" border="0" title="vorw&auml;rts" /></a>
<div class="crlf1"></div>
&#160;&#160;&#160;<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fst-open.com%2Fst-open%2Fdoc%2Fd%2Ftut%2F0505.htm">
<img src="../../../../pics/xhtml.png" alt="validHTML" width="100" height="35" border="0" title="XHTML pr&uuml;fen" /></a>
<div class="crlf1"></div>
</body>
</html>
